package cn.com.ahao.gateway.interceptor;

import cn.com.ahao.gateway.context.GatewayContextHolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DurationStatisticsInterceptor extends HandlerInterceptorAdapter {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        logger.info("====== DurationStatisticsFilter start ======");
        GatewayContextHolder.setStartTime(System.currentTimeMillis());
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        long start = GatewayContextHolder.getStartTime();
        long end = System.currentTimeMillis();
        logger.info("====== DurationStatisticsFilter end, cost: {} ======", (end - start));

    }
}
